package com.ziroom.crm.mq.core.retry;

/**
 * <p></p>
 * <p>
 * <PRE>
 * <BR>    修改记录
 * <BR>-----------------------------------------------
 * <BR>    修改日期         修改人          修改内容
 * </PRE>
 *
 * @author WeiShaoying
 * @version 1.0
 * @date Created in 2020年09月08日 16:09
 * @since 1.0
 */
public interface DelayPolicy {

    /**
     * 开始执行
     *
     * @param retryContext
     * @return
     */
    DelayContext start(RetryContext retryContext);

    /**
     * 执行延迟,延迟消息执行
     *
     * @param delayContext
     */
    void delay(DelayContext delayContext);

    /**
     * 当前delay 策略耗时
     *
     * @return 毫秒
     */
    long getDelayTime(DelayContext delayContext);
}
